package jvm调优例子;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class FullGc {
    public static class CardInfo {
        BigDecimal price = new BigDecimal(0.0);
        String name = "张三";
        int age = 5;
        Date brithDate = new Date();

        public void m() {

        }

        private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(50,
                new ThreadPoolExecutor.DiscardOldestPolicy());

        public static void main(String[] args) throws InterruptedException {
            executor.setMaximumPoolSize(50);
            for (; ; ) {
                modelFit();
                Thread.sleep(100);

            }
        }

        private static void modelFit() {
            List<CardInfo> taskList = getAllCardInfo();
            taskList.forEach(info -> {
                executor.scheduleWithFixedDelay(() -> {
                    info.m();
                }, 2, 3, TimeUnit.SECONDS);
            });

        }

        private static List<CardInfo> getAllCardInfo() {
            List<CardInfo> taskList = new ArrayList<>();
            for (int i = 0; i < 100; i++) {
                CardInfo info = new CardInfo();
                taskList.add(info);
            }
            return taskList;
        }
    }
}
